﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZeroFFmpeg.Enums;

namespace ZeroFFmpeg
{
    /// <summary>
    /// 
    /// </summary>
    public interface IFFmpegArguments
    {
        /// <summary>
        /// 设置缩放器标志。这也用于设置缩放算法。只应选择单一算法。默认值为 '双三次'
        /// </summary>
        /// <param name="value"></param>
        void SwsFlags(string value);

        /// <summary>
        ///  设置缩放器标志。这也用于设置缩放算法。只应选择单一算法。默认值为 '双三次'
        /// </summary>
        /// <param name="value"></param>
        void SwsFlags(SwsFlags value);




        /// <summary>
        /// 设置源高度（仅限API）。
        /// </summary>
        void Srch();

        /// <summary>
        /// 设置目标宽度（仅限API）。
        /// </summary>
        void Dstw();

        /// <summary>
        /// 设置目标高度（仅限API）。
        /// </summary>
        void Dsth();

        /// <summary>
        /// 设置源像素格式（必须表示为整数）（仅限API）。
        /// </summary>
        void SrcFormat(int value);

        /// <summary>
        /// 设置目标像素格式（必须表示为整数）（仅限API）。
        /// </summary>
        void DstFormat(int value);

        /// <summary>
        /// 如果值设置为1，则表示源为全范围。默认值为 0，表示源范围有限（布尔类型）。
        /// </summary>
        void SrcRange(int value);

        /// <summary>
        /// 如果值设置为1，则启用目标的全范围。默认值为0，启用限制范围（布尔类型）。
        /// </summary>
        void DstRange(int value);

        /// <summary>
        /// 设置缩放算法参数。指定的值特定于某些缩放算法，而被其他算法忽略。指定的值是浮点数。
        /// </summary>
        void SetScalingAlgorithmParams(double param0, double param1);

        /// <summary>
        /// 设置抖动算法
        /// </summary>
        /// <param name="value"></param>
        void SwsDither(SwsDither value);

        /// <summary>
        /// 设置抖动算法
        /// </summary>
        /// <param name="value"></param>
        void SwsDither(string value);

        /// <summary>
        /// 设置当输入具有 Alpha 但输出没有时使用的 Alpha 混合。默认值为 '无混合'
        /// </summary>
        /// <param name="value"></param>
        void Alphablend(Alphablend value);

        /// <summary>
        /// 设置当输入具有 Alpha 但输出没有时使用的 Alpha 混合。默认值为 '无混合'
        /// </summary>
        /// <param name="value"></param>
        void Alphablend(string value);
    }


}
